////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  asf_3_0_0.cpp
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "asf_3_0_0.h"
#include "parametersetmanager.h"

ASF_3_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Default Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_asf30TypeClass::chromatix_asf30TypeClass(
    const CHAR* name)
    : ParameterModule(name, MAJOR, MINOR, PATCH, 0, 0, 0, 0)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(enable_section);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(control_variables);
    PARAMETER_INITIALIZE(control_method);
    PARAMETER_INITIALIZE(dynamic_enable_triggers);
    PARAMETER_INITIALIZE(chromatix_asf30_reserve);
    PARAMETER_INITIALIZE(chromatix_asf30_core);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_asf30TypeClass::chromatix_asf30TypeClass(
    const CHAR* name,
    UINT32 modeId,
    UINT16 mode,
    UINT16 subMode,
    UINT32 group)
    : ParameterModule(name, MAJOR, MINOR, PATCH, modeId, mode, subMode, group)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(enable_section);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(control_variables);
    PARAMETER_INITIALIZE(control_method);
    PARAMETER_INITIALIZE(dynamic_enable_triggers);
    PARAMETER_INITIALIZE(chromatix_asf30_reserve);
    PARAMETER_INITIALIZE(chromatix_asf30_core);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Destructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_asf30TypeClass::~chromatix_asf30TypeClass()
{
    Unloadchromatix_asf30Type(this);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetName
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const CHAR* chromatix_asf30TypeClass::GetName(
    const CHAR* type)
{
    const CHAR* name = type;
    CHAR temp[ParameterFileSymbolTableEntry::TYPE_LEN + 1];
    if (PARAMETER_STRCMP(type, ParameterFileSymbolTableEntry::GetType(temp, "asf30_ipe")) == 0)
    {
        name = "asf30_ipe";
    }
    return name;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType* structure)
{
    BOOL result = TRUE;
    result = result && Loadasf30_rgn_dataType_layer_1_hpf_symmetric_coeff_tabStruct(entry, &structure->layer_1_hpf_symmetric_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_lpf_symmetric_coeff_tabStruct(entry, &structure->layer_1_lpf_symmetric_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_activity_band_pass_coeff_tabStruct(entry, &structure->layer_1_activity_band_pass_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_activity_normalization_lut_tabStruct(entry, &structure->layer_1_activity_normalization_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_weight_modulation_lut_tabStruct(entry, &structure->layer_1_weight_modulation_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_soft_threshold_lut_tabStruct(entry, &structure->layer_1_soft_threshold_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_gain_positive_lut_tabStruct(entry, &structure->layer_1_gain_positive_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_gain_negative_lut_tabStruct(entry, &structure->layer_1_gain_negative_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_1_gain_weight_lut_tabStruct(entry, &structure->layer_1_gain_weight_lut_tab);
    result = result && entry->ReadFloat(&structure->layer_1_gamma_corrected_luma_target);
    result = result && entry->ReadFloat(&structure->layer_1_gain_cap);
    result = result && entry->ReadFloat(&structure->layer_1_clamp_ul);
    result = result && entry->ReadFloat(&structure->layer_1_clamp_ll);
    result = result && entry->ReadFloat(&structure->layer_1_norm_scale);
    result = result && entry->ReadFloat(&structure->layer_1_activity_clamp_threshold);
    result = result && entry->ReadFloat(&structure->layer_1_l2_norm_en);
    result = result && entry->ReadFloat(&structure->layer_1_median_blend_upper_offset);
    result = result && entry->ReadFloat(&structure->layer_1_median_blend_lower_offset);
    result = result && entry->ReadFloat(&structure->layer_1_sp);
    result = result && Loadasf30_rgn_dataType_layer_2_hpf_symmetric_coeff_tabStruct(entry, &structure->layer_2_hpf_symmetric_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_lpf_symmetric_coeff_tabStruct(entry, &structure->layer_2_lpf_symmetric_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_activity_band_pass_coeff_tabStruct(entry, &structure->layer_2_activity_band_pass_coeff_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_activity_normalization_lut_tabStruct(entry, &structure->layer_2_activity_normalization_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_weight_modulation_lut_tabStruct(entry, &structure->layer_2_weight_modulation_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_soft_threshold_lut_tabStruct(entry, &structure->layer_2_soft_threshold_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_gain_positive_lut_tabStruct(entry, &structure->layer_2_gain_positive_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_gain_negative_lut_tabStruct(entry, &structure->layer_2_gain_negative_lut_tab);
    result = result && Loadasf30_rgn_dataType_layer_2_gain_weight_lut_tabStruct(entry, &structure->layer_2_gain_weight_lut_tab);
    result = result && entry->ReadFloat(&structure->layer_2_clamp_ul);
    result = result && entry->ReadFloat(&structure->layer_2_clamp_ll);
    result = result && entry->ReadFloat(&structure->layer_2_norm_scale);
    result = result && entry->ReadFloat(&structure->layer_2_activity_clamp_threshold);
    result = result && entry->ReadFloat(&structure->layer_2_l2_norm_en);
    result = result && Loadasf30_rgn_dataType_radial_activity_adj_tabStruct(entry, &structure->radial_activity_adj_tab);
    result = result && Loadasf30_rgn_dataType_radial_gain_adj_tabStruct(entry, &structure->radial_gain_adj_tab);
    result = result && entry->ReadFloat(&structure->skin_hue_min);
    result = result && entry->ReadFloat(&structure->skin_hue_max);
    result = result && entry->ReadFloat(&structure->skin_y_min);
    result = result && entry->ReadFloat(&structure->skin_y_max);
    result = result && entry->ReadFloat(&structure->skin_saturation_min_ymax);
    result = result && entry->ReadFloat(&structure->skin_saturation_max_ymax);
    result = result && entry->ReadFloat(&structure->skin_saturation_min_ymin);
    result = result && entry->ReadFloat(&structure->skin_saturation_max_ymin);
    result = result && entry->ReadFloat(&structure->skin_boundary_probability);
    result = result && entry->ReadFloat(&structure->skin_percent);
    result = result && entry->ReadFloat(&structure->skin_nonskin_to_skin_qratio);
    result = result && entry->ReadFloat(&structure->flat_thresold);
    result = result && entry->ReadFloat(&structure->max_smoothing_clamp);
    result = result && entry->ReadFloat(&structure->corner_threshold);
    result = result && entry->ReadFloat(&structure->smoothing_strength);
    result = result && Loadasf30_rgn_dataType_gain_contrast_positive_tabStruct(entry, &structure->gain_contrast_positive_tab);
    result = result && Loadasf30_rgn_dataType_gain_contrast_negative_tabStruct(entry, &structure->gain_contrast_negative_tab);
    result = result && Loadasf30_rgn_dataType_skin_gain_tabStruct(entry, &structure->skin_gain_tab);
    result = result && Loadasf30_rgn_dataType_skin_activity_tabStruct(entry, &structure->skin_activity_tab);
    result = result && Loadasf30_rgn_dataType_gain_chroma_positive_tabStruct(entry, &structure->gain_chroma_positive_tab);
    result = result && Loadasf30_rgn_dataType_gain_chroma_negative_tabStruct(entry, &structure->gain_chroma_negative_tab);
    result = result && entry->ReadFloat(&structure->face_boundary);
    result = result && entry->ReadFloat(&structure->face_transition);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_hpf_symmetric_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_hpf_symmetric_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_hpf_symmetric_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 10; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_hpf_symmetric_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_lpf_symmetric_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_lpf_symmetric_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_lpf_symmetric_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 10; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_lpf_symmetric_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_activity_band_pass_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_activity_band_pass_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_activity_band_pass_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 6; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_activity_band_pass_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_activity_normalization_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_activity_normalization_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_activity_normalization_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_activity_normalization_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_weight_modulation_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_weight_modulation_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_weight_modulation_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_weight_modulation_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_soft_threshold_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_soft_threshold_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_soft_threshold_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_soft_threshold_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_gain_positive_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_gain_positive_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_gain_positive_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_gain_positive_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_gain_negative_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_gain_negative_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_gain_negative_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_gain_negative_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_1_gain_weight_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_1_gain_weight_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_1_gain_weight_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_1_gain_weight_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_hpf_symmetric_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_hpf_symmetric_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_hpf_symmetric_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 6; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_hpf_symmetric_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_lpf_symmetric_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_lpf_symmetric_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_lpf_symmetric_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 6; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_lpf_symmetric_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_activity_band_pass_coeff_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_activity_band_pass_coeff_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_activity_band_pass_coeff_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 6; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_activity_band_pass_coeff[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_activity_normalization_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_activity_normalization_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_activity_normalization_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_activity_normalization_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_weight_modulation_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_weight_modulation_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_weight_modulation_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_weight_modulation_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_soft_threshold_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_soft_threshold_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_soft_threshold_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_soft_threshold_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_gain_positive_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_gain_positive_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_gain_positive_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_gain_positive_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_gain_negative_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_gain_negative_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_gain_negative_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_gain_negative_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_layer_2_gain_weight_lut_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_layer_2_gain_weight_lut_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::layer_2_gain_weight_lut_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 64; i++)
    {
        result = result && entry->ReadFloat(&structure->layer_2_gain_weight_lut[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_radial_activity_adj_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_radial_activity_adj_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::radial_activity_adj_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 4; i++)
    {
        result = result && entry->ReadFloat(&structure->radial_activity_adj[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_radial_gain_adj_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_radial_gain_adj_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::radial_gain_adj_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 4; i++)
    {
        result = result && entry->ReadFloat(&structure->radial_gain_adj[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_gain_contrast_positive_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_gain_contrast_positive_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::gain_contrast_positive_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->gain_contrast_positive[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_gain_contrast_negative_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_gain_contrast_negative_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::gain_contrast_negative_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->gain_contrast_negative[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_skin_gain_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_skin_gain_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::skin_gain_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 17; i++)
    {
        result = result && entry->ReadFloat(&structure->skin_gain[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_skin_activity_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_skin_activity_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::skin_activity_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 17; i++)
    {
        result = result && entry->ReadFloat(&structure->skin_activity[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_gain_chroma_positive_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_gain_chroma_positive_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::gain_chroma_positive_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->gain_chroma_positive[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load asf30_rgn_dataType_gain_chroma_negative_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadasf30_rgn_dataType_gain_chroma_negative_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    asf30_rgn_dataType::gain_chroma_negative_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->gain_chroma_negative[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_aec_dataType(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_aec_dataType* structure)
{
    BOOL result = TRUE;
    result = result && globalelements::globalelementsClass::Loadtrigger_pt_type_aec(entry, &structure->aec_trigger);
    result = result && Loadasf30_rgn_dataType(entry, &structure->asf30_rgn_data);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_hdr_aec_dataType(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_hdr_aec_dataType* structure)
{
    BOOL result = TRUE;
    result = result && ispglobalelements::ispglobalelementsClass::Loadtrigger_pt_type_aec_hdr(entry, &structure->hdr_aec_trigger);
    result = result && Loadmod_asf30_hdr_aec_dataType_hdr_aec_dataStruct(entry, &structure->hdr_aec_data);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_hdr_aec_dataType_hdr_aec_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_hdr_aec_dataType_hdr_aec_dataStruct(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_hdr_aec_dataType::hdr_aec_dataStruct* structure)
{
    BOOL result = TRUE;

    // Reading structure->mod_asf30_aec_data from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->mod_asf30_aec_dataCount);
        structure->mod_asf30_aec_dataID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->mod_asf30_aec_data   = PARAMETER_NEW mod_asf30_aec_dataType[structure->mod_asf30_aec_dataCount];
        }
        if (!result || structure->mod_asf30_aec_data == NULL)
        {
            structure->mod_asf30_aec_dataCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->mod_asf30_aec_dataCount; i++)
        {
            result = result && Loadmod_asf30_aec_dataType(pointerEntry1, &structure->mod_asf30_aec_data[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_drc_gain_dataType(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_drc_gain_dataType* structure)
{
    BOOL result = TRUE;
    result = result && ispglobalelements::ispglobalelementsClass::Loadtrigger_pt_type(entry, &structure->drc_gain_trigger);
    result = result && Loadmod_asf30_drc_gain_dataType_drc_gain_dataStruct(entry, &structure->drc_gain_data);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_drc_gain_dataType_drc_gain_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_drc_gain_dataType_drc_gain_dataStruct(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_drc_gain_dataType::drc_gain_dataStruct* structure)
{
    BOOL result = TRUE;

    // Reading structure->mod_asf30_hdr_aec_data from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->mod_asf30_hdr_aec_dataCount);
        structure->mod_asf30_hdr_aec_dataID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->mod_asf30_hdr_aec_data   = PARAMETER_NEW mod_asf30_hdr_aec_dataType[structure->mod_asf30_hdr_aec_dataCount];
        }
        if (!result || structure->mod_asf30_hdr_aec_data == NULL)
        {
            structure->mod_asf30_hdr_aec_dataCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->mod_asf30_hdr_aec_dataCount; i++)
        {
            result = result && Loadmod_asf30_hdr_aec_dataType(pointerEntry1, &structure->mod_asf30_hdr_aec_data[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_total_scale_ratio_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_total_scale_ratio_dataType(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_total_scale_ratio_dataType* structure)
{
    BOOL result = TRUE;
    result = result && ispglobalelements::ispglobalelementsClass::Loadtrigger_pt_type(entry, &structure->total_scale_ratio_trigger);
    result = result && Loadmod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct(entry, &structure->total_scalor_ratio_data);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct(
    ParameterFileSymbolTableEntry* entry,
    mod_asf30_total_scale_ratio_dataType::total_scalor_ratio_dataStruct* structure)
{
    BOOL result = TRUE;

    // Reading structure->mod_asf30_drc_gain_data from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->mod_asf30_drc_gain_dataCount);
        structure->mod_asf30_drc_gain_dataID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->mod_asf30_drc_gain_data   = PARAMETER_NEW mod_asf30_drc_gain_dataType[structure->mod_asf30_drc_gain_dataCount];
        }
        if (!result || structure->mod_asf30_drc_gain_data == NULL)
        {
            structure->mod_asf30_drc_gain_dataCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->mod_asf30_drc_gain_dataCount; i++)
        {
            result = result && Loadmod_asf30_drc_gain_dataType(pointerEntry1, &structure->mod_asf30_drc_gain_data[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_asf30_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadchromatix_asf30_coreType(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30_coreType* structure)
{
    BOOL result = TRUE;

    // Reading structure->mod_asf30_total_scale_ratio_data from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->mod_asf30_total_scale_ratio_dataCount);
        structure->mod_asf30_total_scale_ratio_dataID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->mod_asf30_total_scale_ratio_data   = PARAMETER_NEW mod_asf30_total_scale_ratio_dataType[structure->mod_asf30_total_scale_ratio_dataCount];
        }
        if (!result || structure->mod_asf30_total_scale_ratio_data == NULL)
        {
            structure->mod_asf30_total_scale_ratio_dataCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->mod_asf30_total_scale_ratio_dataCount; i++)
        {
            result = result && Loadmod_asf30_total_scale_ratio_dataType(pointerEntry1, &structure->mod_asf30_total_scale_ratio_data[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_asf30_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadchromatix_asf30_reserveType(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30_reserveType* structure)
{
    BOOL result = TRUE;
    result = result && Loadchromatix_asf30_reserveType_radial_anchor_tabStruct(entry, &structure->radial_anchor_tab);
    result = result && entry->ReadInt32(&structure->face_enable);
    result = result && entry->ReadInt32(&structure->edge_alignment_enable);
    result = result && entry->ReadInt32(&structure->layer_1_enable);
    result = result && entry->ReadInt32(&structure->layer_2_enable);
    result = result && entry->ReadInt32(&structure->radial_enable);
    result = result && entry->ReadInt32(&structure->contrast_enable);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_asf30_reserveType_radial_anchor_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadchromatix_asf30_reserveType_radial_anchor_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30_reserveType::radial_anchor_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 4; i++)
    {
        result = result && entry->ReadFloat(&structure->radial_anchor[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_asf30Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadchromatix_asf30Type(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type* structure)
{
    BOOL result = TRUE;
    result = result && Loadenable_sectionStruct(entry, &structure->enable_section);
    result = result && Loadmodule_versionStruct(entry, &structure->module_version);
    result = result && Loadcontrol_variablesStruct(entry, &structure->control_variables);
    result = result && Loadcontrol_methodStruct(entry, &structure->control_method);
    result = result && Loaddynamic_enable_triggersStruct(entry, &structure->dynamic_enable_triggers);
    result = result && Loadchromatix_asf30_reserveType(entry, &structure->chromatix_asf30_reserve);
    result = result && Loadchromatix_asf30_coreType(entry, &structure->chromatix_asf30_core);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load enable_sectionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadenable_sectionStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::enable_sectionStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->asf_enable);
    result = result && entry->ReadInt32(&structure->skin_enable);
    result = result && entry->ReadInt32(&structure->chroma_gradient_enable);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load module_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadmodule_versionStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::module_versionStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->major_revision);
    result = result && entry->ReadInt32(&structure->minor_revision);
    result = result && entry->ReadInt32(&structure->incr_revision);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load control_variablesStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadcontrol_variablesStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::control_variablesStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 4; i++)
    {
        structure->control_var_type[i] = (chromatix_asf30Type::control_variablesStruct::control_var_typeEnum)entry->ReadEnum(&result);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load control_methodStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loadcontrol_methodStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::control_methodStruct* structure)
{
    BOOL result = TRUE;
    structure->aec_exp_control = (ispglobalelements::tuning_control_aec_type)entry->ReadEnum(&result);
    structure->aec_hdr_control = (ispglobalelements::tuning_control_aec_hdr_type)entry->ReadEnum(&result);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load dynamic_enable_triggersStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loaddynamic_enable_triggersStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::dynamic_enable_triggersStruct* structure)
{
    BOOL result = TRUE;
    result = result && Loaddynamic_enable_triggersStruct_asf_enableStruct(entry, &structure->asf_enable);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load dynamic_enable_triggersStruct_asf_enableStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_asf30TypeClass::Loaddynamic_enable_triggersStruct_asf_enableStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_asf30Type::dynamic_enable_triggersStruct::asf_enableStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->enable);
    structure->hyst_control_var = (ispglobalelements::control_var_type)entry->ReadEnum(&result);
    structure->hyst_mode = (ispglobalelements::hyst_direction)entry->ReadEnum(&result);
    result = result && ispglobalelements::ispglobalelementsClass::Loadtrigger_pt_couplet_type(entry, &structure->hyst_trigger);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_hdr_aec_dataType(
    mod_asf30_hdr_aec_dataType* structure)
{
    Unloadmod_asf30_hdr_aec_dataType_hdr_aec_dataStruct(&structure->hdr_aec_data);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_hdr_aec_dataType_hdr_aec_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_hdr_aec_dataType_hdr_aec_dataStruct(
    mod_asf30_hdr_aec_dataType::hdr_aec_dataStruct* structure)
{
    PARAMETER_DELETE[] structure->mod_asf30_aec_data;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_drc_gain_dataType(
    mod_asf30_drc_gain_dataType* structure)
{
    Unloadmod_asf30_drc_gain_dataType_drc_gain_dataStruct(&structure->drc_gain_data);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_drc_gain_dataType_drc_gain_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_drc_gain_dataType_drc_gain_dataStruct(
    mod_asf30_drc_gain_dataType::drc_gain_dataStruct* structure)
{
    for (UINT32 i = 0; i < structure->mod_asf30_hdr_aec_dataCount; i++)
    {
        Unloadmod_asf30_hdr_aec_dataType(&structure->mod_asf30_hdr_aec_data[i]);
    }
    PARAMETER_DELETE[] structure->mod_asf30_hdr_aec_data;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_total_scale_ratio_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_total_scale_ratio_dataType(
    mod_asf30_total_scale_ratio_dataType* structure)
{
    Unloadmod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct(&structure->total_scalor_ratio_data);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload mod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadmod_asf30_total_scale_ratio_dataType_total_scalor_ratio_dataStruct(
    mod_asf30_total_scale_ratio_dataType::total_scalor_ratio_dataStruct* structure)
{
    for (UINT32 i = 0; i < structure->mod_asf30_drc_gain_dataCount; i++)
    {
        Unloadmod_asf30_drc_gain_dataType(&structure->mod_asf30_drc_gain_data[i]);
    }
    PARAMETER_DELETE[] structure->mod_asf30_drc_gain_data;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatix_asf30_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadchromatix_asf30_coreType(
    chromatix_asf30_coreType* structure)
{
    for (UINT32 i = 0; i < structure->mod_asf30_total_scale_ratio_dataCount; i++)
    {
        Unloadmod_asf30_total_scale_ratio_dataType(&structure->mod_asf30_total_scale_ratio_data[i]);
    }
    PARAMETER_DELETE[] structure->mod_asf30_total_scale_ratio_data;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatix_asf30Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_asf30TypeClass::Unloadchromatix_asf30Type(
    chromatix_asf30Type* structure)
{
    Unloadchromatix_asf30_coreType(&structure->chromatix_asf30_core);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Parse symbol table entry, and return a new object
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ParameterModule* chromatix_asf30TypeClass::Parse(
    ParameterSetManager* manager,
    ParameterFileSymbolTableEntry* entry) const
{
    chromatix_asf30TypeClass* cls = NULL;

    if (PARAMETER_STRCMP(Type, entry->Type) == 0 && Major == entry->Major &&
        Minor == entry->Minor && Patch == entry->Patch)
    {
        cls = PARAMETER_NEW chromatix_asf30TypeClass(GetName(entry->Type), 
            entry->ModeId, entry->Mode, entry->SubMode, entry->Group);
        if (cls != NULL)
        {
            BOOL result = TRUE;

            cls->SymbolTableID = entry->ID;
            cls->ID            = entry->ID;

            result = result && Loadchromatix_asf30Type(entry, cls);

            if (!result)
            {
                PARAMETER_DELETE cls;
                cls = NULL;
            }
        }
    }
    return (ParameterModule*)cls;
}


ASF_3_0_0_NAMESPACE_END
